package flychess.data;

import flychess.view.DisplayMap;
public abstract class GameMap {
    public int mapLen;
    public int[] map;   //对战地图,注意，以下数组中的index从0开始，故第1个地雷实际出现在地图上的第5个位置
    public int[] luckyTurn; //幸运轮盘
    public int[] landMine;   //地雷位置，第1个地雷实际出现在地图上的第6个位置
    public int[] pause;         //暂停
    public int[] timeTunnel;   //时空隧道

    /**
     * 生成地图:
     * 关卡代号为：1：幸运轮盘 2：地雷  3: 暂停 4：时空隧道 0：普通
     */
    public void createMap(){
        int i;
        //在对战地图上设置幸运轮盘
        for(i = 0; i < luckyTurn.length; i++){
            map[luckyTurn[i]] = DisplayMap.iconNameToIndex.get("luckyTurn");
        }

        //在对战地图上设置地雷
        for(i = 0; i < landMine.length; i++){
            map[landMine[i]] = DisplayMap.iconNameToIndex.get("landMine");
        }

        //在对战地图上设置暂停
        for(i = 0; i < pause.length; i++){
            map[pause[i]] = DisplayMap.iconNameToIndex.get("pause");
        }

        //在对战地图上设置时空隧道
        for(i = 0; i < timeTunnel.length; i++){
            map[timeTunnel[i]] = DisplayMap.iconNameToIndex.get("timeTunnel");
        }
        map[0] = DisplayMap.iconNameToIndex.get("start");
        map[mapLen - 1] = DisplayMap.iconNameToIndex.get("end");
    }

    /**
     * 将玩家的位置进行边界检测，然后返回合法的位置
     * @param position 玩家的位置
     * @return 合法化的玩家位置
     */
    public int convertToLegal(int position) {
        if (position < 0) {
            return 0;
        } else return Math.min(position, mapLen - 1);
    }
}